// Keywords: nonWF, non-Wright-Fisher, Wright-Fisher, non-overlapping generations, discrete generations

initialize() {
	initializeSLiMModelType("nonWF");
	initializeMutationType("m1", 0.5, "f", 0.0);
	m1.convertToSubstitution = T;
	initializeMutationType("m2", 0.0, "f", -0.5);
	initializeGenomicElementType("g1", c(m1, m2), c(1.0, 0.05));
	initializeGenomicElement(g1, 0, 99999);
	initializeMutationRate(1e-7);
	initializeRecombinationRate(1e-8);
}
reproduction() {
	K = sim.getValue("K");
	
	// parents are chosen randomly, irrespective of fitness
	parents1 = p1.sampleIndividuals(K, replace=T);
	parents2 = p1.sampleIndividuals(K, replace=T);
	
	for (i in seqLen(K))
		p1.addCrossed(parents1[i], parents2[i]);
		
	self.active = 0;
}
1 early() {
	sim.setValue("K", 500);
	sim.addSubpop("p1", sim.getValue("K"));
}
early()
{
	// parents die; offspring survive proportional to fitness
	inds = sim.subpopulations.individuals;
	inds[inds.age > 0].fitnessScaling = 0.0;
}
10000 late() { sim.outputFixedMutations(); }
